﻿Public Class Agentes

    Private oMaestra As New CMaestras
    Private dtAgente As New DataTable
    Private idAgente As Integer

    Private Sub Agentes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.CargarGrilla()
    End Sub

    Private Sub CargarGrilla()
        Try
            Dim ds As New DataSet
            ds = Me.oMaestra.GetTabla(CMaestras.Tabla.Agente)
            Me.dtAgente = ds.Tables(0).Copy            

            'Llena grilla de los agentes
            If (Me.dtAgente.Rows.Count > 0) Then
                Me.grdAgente.DataSource = Nothing
                Me.grdAgente.Columns.Clear()
                Me.grdAgente.DataSource = Me.dtAgente

                Dim iconoEDITAR As New DataGridViewImageColumn()
                iconoEDITAR.ValuesAreIcons = False
                iconoEDITAR.Image = My.Resources.editar
                iconoEDITAR.HeaderText = "EDITAR"
                iconoEDITAR.Name = "EDITAR"
                Me.grdAgente.Columns.Add(iconoEDITAR)

                Dim iconoELIMINAR As New DataGridViewImageColumn()
                iconoELIMINAR.ValuesAreIcons = False
                iconoELIMINAR.Image = My.Resources.eliminar
                iconoELIMINAR.HeaderText = "ELIMINAR"
                iconoELIMINAR.Name = "ELIMINAR"
                Me.grdAgente.Columns.Add(iconoELIMINAR)

                Me.grdAgente.Columns("ID").Visible = False                
                Me.grdAgente.Columns("EDITAR").Width = 60
                Me.grdAgente.Columns("ELIMINAR").Width = 70
            Else
                Me.grdAgente.DataSource = Nothing
                Me.grdAgente.Columns.Clear()
                MessageBox.Show("No existen agentes", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If

        Catch ex As Exception
            MessageBox.Show("Ocurrió un error al cargar los agentes: " & ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
    End Sub

    Private Sub EliminarAgente(ByVal id As Integer)
        Try
            If (MessageBox.Show("¿Realmente desea eliminar este agente?", "Eliminar Agente", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes) Then
                Cursor = Cursors.WaitCursor
                Me.oMaestra.Eliminar(id, CMaestras.Tabla.Agente)
                Cursor = Cursors.Default
                MessageBox.Show("El agente ha sido eliminado", "Agente eliminado", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
        Catch ex As Exception
            Cursor = Cursors.Default
            MessageBox.Show("NO se eliminó el agente: " & ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        End Try
        Me.CargarGrilla()
    End Sub

    Private Sub btnCancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancelar.Click
        Me.idAgente = 0
        Me.txtNombre.Text = ""
    End Sub

    Private Sub btnListo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnListo.Click
        If (Me.Validar()) Then
            Try
                Cursor = Cursors.WaitCursor
                Dim result As String = Me.oMaestra.ActualizarAgente(Me.idAgente, Trim(Me.txtNombre.Text))

                'Si hay algun formulario abierto con combo de ciudades, recarga el combo
                If (My.Forms.Consolidados.Visible) Then
                    My.Forms.Consolidados.CargarAgente()
                End If

                Cursor = Cursors.Default
                MessageBox.Show(result, "Agente", MessageBoxButtons.OK, MessageBoxIcon.Information)

                'Si esta abierto el formulario de las hijas
                If (My.Forms.Hijas.Visible) Then
                    My.Forms.Hijas.CargarAgentes()
                End If
                If (My.Forms.HijasMaritimo.Visible) Then
                    My.Forms.HijasMaritimo.CargarAgentes()
                End If
                If (My.Forms.HijasTercero.Visible) Then
                    My.Forms.HijasTercero.CargarAgentes()
                End If
                If (My.Forms.HijasAereoExportacion.Visible) Then
                    My.Forms.HijasAereoExportacion.CargarAgentes()
                End If
                
            Catch ex As Exception
                Cursor = Cursors.Default
                MessageBox.Show("Ocurrió un error al guardar el agente: " & ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            End Try

            Me.idAgente = 0
            Me.txtNombre.Text = ""
            Me.CargarGrilla()
        End If
    End Sub

    Private Function Validar() As Boolean
        Dim mensaje As String = ""

        If (Trim(Me.txtNombre.Text).Length = 0) Then
            mensaje += "- Debe escribir el nombre del agente" & Chr(13)
        End If
        If (mensaje.Length > 0) Then
            MessageBox.Show(mensaje, "Datos incompletos", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Return False
        Else
            Return True
        End If
    End Function

#Region "Eventos de la grilla"

#End Region

    Private Sub grdAgente_CellMouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles grdAgente.CellMouseDoubleClick
        '*** Permite EDITAR o ELIMINAR
        'Se obtiene la info del registro
        Dim id As Integer = Me.grdAgente.Rows(e.RowIndex).Cells("ID").Value
        Dim agente As String = Me.grdAgente.Rows(e.RowIndex).Cells("AGENTE").Value        

        Select Case Me.grdAgente.Columns(e.ColumnIndex).Name
            Case "EDITAR"
                Me.idAgente = id
                Me.txtNombre.Text = agente
            Case "ELIMINAR"
                Me.EliminarAgente(id)
        End Select
    End Sub

    Private Sub grdAgente_CellMouseEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles grdAgente.CellMouseEnter
        '*** Coloca la manito cuando el mouse entra en las celdas de EDITAR y ELIMINAR
        If (Me.grdAgente.Columns(e.ColumnIndex).Name = "ELIMINAR" Or Me.grdAgente.Columns(e.ColumnIndex).Name = "EDITAR") Then
            Cursor = Cursors.Hand
        Else
            Cursor = Cursors.Default
        End If

    End Sub

    Private Sub grdAgente_CellMouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles grdAgente.CellMouseMove
        If (Me.grdAgente.Columns(e.ColumnIndex).Name = "ELIMINAR" Or Me.grdAgente.Columns(e.ColumnIndex).Name = "EDITAR") Then
            Cursor = Cursors.Hand
        Else
            Cursor = Cursors.Default
        End If

    End Sub
End Class